package chemtools_logica.BDL.SFBean;

import chemtools_logica.Entidades.Eventoxusuario;

import chemtools_logica.Entidades.EventoxusuarioPK;

import chemtools_logica.BDL.IL.BDL_SFEventoxusuarioLocal;
import chemtools_logica.BDL.IR.BDL_SFEventoxusuarioRemote;

import chemtools_logica.Beans.EventoxusuarioBean;

import chemtools_logica.Entidades.Eventoxinsumo;

import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import javax.ejb.SessionContext;
import javax.ejb.Stateless;

import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless(name = "BDL_SFEventoxusuario", mappedName = "map-BDL_SFEventoxusuario")
public class BDL_SFEventoxusuarioBean implements BDL_SFEventoxusuarioRemote, BDL_SFEventoxusuarioLocal {
    @Resource
    SessionContext sessionContext;
    @PersistenceContext(unitName = "Chemtools_Logica")
    private EntityManager em;

    public BDL_SFEventoxusuarioBean() {
    }

    public Eventoxusuario persistEventoxusuario(Eventoxusuario eventoxusuario) {
        em.persist(eventoxusuario);
        return eventoxusuario;
    }

    public Eventoxusuario mergeEventoxusuario(Eventoxusuario eventoxusuario) {
        return em.merge(eventoxusuario);
    }

    public void removeEventoxusuario(Eventoxusuario eventoxusuario) {
        eventoxusuario =
            em.find(Eventoxusuario.class,
                    new EventoxusuarioPK(eventoxusuario.getEvento().getIdEvento(),
                                         eventoxusuario.getUsuario().getIdUsuario()));
        em.remove(eventoxusuario);
    }

    /** <code>select o from Eventoxusuario o</code> */
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Eventoxusuario> getEventoxusuarioFindAll() {
        return em.createNamedQuery("Eventoxusuario.findAll", Eventoxusuario.class).getResultList();
    }
    
    public List<Eventoxusuario> getEventoxUsuarioByUsuario(int  idUsuario){
        List<Eventoxusuario> listaEventoXUsuario = new ArrayList<Eventoxusuario>();
        
        String ejbQuery = "SELECT eu.* FROM eventoxusuario eu " +
                          " WHERE eu.idUsuario = "+idUsuario +
                          " ORDER BY eu.Fecha asc";
        
        try{
            Query query = em.createNativeQuery(ejbQuery, Eventoxusuario.class);
            listaEventoXUsuario = query.getResultList();
        }catch(Exception e)
        {
            listaEventoXUsuario = null;
        }
        
        return listaEventoXUsuario;
    }
    
    public List<Eventoxusuario> existeEvento(EventoxusuarioBean eu){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            String ejbQuery = "SELECT eu FROM Eventoxusuario eu" +
                              " WHERE eu.usuario.idUsuario = "+eu.getIdUsuario() +
                              " and eu.fecha = '"+sdf.format(eu.getFecha()) +"'"+
                              " and eu.evento.idEvento = "+eu.getIdEvento();
            return em.createQuery(ejbQuery,Eventoxusuario.class).getResultList();
        }
}
